Workflow engines perform an automatic routing of documents to the users responsible for working on them. The documents may be physically moved over the network or maintained in a single database with the appropriate users given access to the data at the required times.
A typical workflow engine has two components, design and runtime. The design component typically is a GUI (graphical user interface) tool. It allows user to define a business work flow process in a diagram using UI elements such as action nodes, decision nodes and sub-diagrams. The action node could define the execution logic, decision node can be used to implement routing decisions based on some criterial data and a sub-diagram to incorporate other business process modules.
The runtime component of workflow engine is responsible for processing business data according to one or many workflow processes predefined by end user using above design components. When business data is processed, the runtime component needs to take the data through the flow path designed and defined in the business flow process. In order to do this, any workflow engine needs to track, monitor and/or persist the state change of the data. The definition of state change here is that, when data enters a new node, leaves the node and moves to next node, the state of data changes.
A traditional way to debug a workflow process running in a workflow engine is to use an IDE (integrated development environment), such as MS Visual C++(for C++), Eclipse (for Java), etc. A user has to run the engine within an IDE in a special debugging mode. To debug, user needs to set one or many a breakpoints in the line of source code. When the running application reaches the breakpoint(s), it pauses for user instruction to continue.
There are numerous drawbacks of this traditional debugging mechanism to debug a workflow. One drawback is that debugging is at the source code level, not at a business process level. A user has to debug a workflow process at source code level. A workflow process source code is typically mixed with the underlying workflow engine source code. While the user defines a workflow in a process designing tool, the user may only understand the GUI representation of the flow, but not the underlining source code. Debugging in source code is a big challenge to the user.
Another drawback is that the production application is down while debugging. The runtime component, typically the workflow engine, needs to be started in a special debugging mode and this means the component will not be running in a production mode. This could mean loss of productivity.
Yet another drawback is that an IDE tool is required to debug the process flow. Therefore, there is a need for a debugger that overcomes the aforesaid drawbacks.